টাইম সিরিজ ফোরকাস্টিং হল এমন একটি প্রক্রিয়া, যার মাধ্যমে পূর্ববর্তী পর্যবেক্ষণের ভিত্তিতে ভবিষ্যৎ মান পূর্বাভাস করা হয়। এই ক্ষেত্রে, উন্নত প্রযুক্তি গুলি ট্রেন্ড, সিজনালিটি এবং অ্যালগোরিদমের মধ্যে থাকা জটিল সম্পর্কগুলো ধরতে অত্যন্ত কার্যকরী। নিচে টাইম সিরিজ ফোরকাস্টিংয়ের জন্য কিছু উন্নত প্রযুক্তি দেওয়া হলো:
ARIMA (AutoRegressive Integrated Moving Average) একটি জনপ্রিয় টাইম সিরিজ মডেল, যা তিনটি উপাদান নিয়ে গঠিত:
SARIMA হল ARIMA মডেলের সিজনাল এক্সটেনশন, যা বিশেষত সিজনাল টাইম সিরিজ ডেটার জন্য ব্যবহৃত হয়।
প্রক্রিয়া:
statsmodels
লাইব্রেরি দিয়ে ARIMA বা SARIMA মডেল ফিট করা।import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.tsa.stattools import adfuller
# ডেটা লোড করা
data = pd.read_csv('your_time_series_data.csv')
# ADF টেস্টের মাধ্যমে স্টেশনারিটি পরীক্ষা করা
result = adfuller(data['value'])
print('ADF Statistic:', result[0])
print('p-value:', result[1])
# ARIMA মডেল তৈরি করা
model = ARIMA(data['value'], order=(5,1,0)) # AR(5), I(1), MA(0)
model_fit = model.fit()
# মডেল ফিটিংয়ের সারাংশ
print(model_fit.summary())
# পূর্বাভাস করা
forecast = model_fit.forecast(steps=10)
plt.plot(data['value'])
plt.plot(np.arange(len(data), len(data)+10), forecast, color='red')
plt.show()
Exponential Smoothing একটি জনপ্রিয় টেকনিক যা সিজনালিটি এবং ট্রেন্ড থাকার ক্ষেত্রে কার্যকরী। এতে পুরানো ডেটা অপেক্ষা নতুন ডেটাকে বেশি গুরুত্ব দেওয়া হয়।
from statsmodels.tsa.holtwinters import ExponentialSmoothing
# Holt-Winters মডেল তৈরি করা
model = ExponentialSmoothing(data['value'], trend='add', seasonal='add', seasonal_periods=12)
model_fit = model.fit()
# পূর্বাভাস করা
forecast = model_fit.forecast(steps=10)
plt.plot(data['value'])
plt.plot(np.arange(len(data), len(data)+10), forecast, color='red')
plt.show()
LSTM হল একটি টাইপের Recurrent Neural Network (RNN) যা দীর্ঘকালীন নির্ভরতা (long-term dependencies) শিখতে সক্ষম। এটি বিশেষভাবে টেক্সট এবং সিকোয়েন্সাল ডেটা প্রক্রিয়া করার জন্য ব্যবহৃত হয়।
LSTM এমন একটি মডেল যা খুব ভালোভাবে দীর্ঘকালীন সম্পর্ক শিখতে সক্ষম এবং এতে non-linear patterns ধরে রাখতে সাহায্য করে।
from keras.models import Sequential
from keras.layers import LSTM, Dense
import numpy as np
# ডেটা প্রস্তুতি (LSTM জন্য সঠিক আকারে রূপান্তর করা)
X_train, y_train = prepare_data(time_series_data) # এখানে সময় সিরিজ ডেটা প্রস্তুত করার জন্য একটি ফাংশন ধরেছি
# LSTM মডেল তৈরি করা
model = Sequential()
model.add(LSTM(units=50, return_sequences=False, input_shape=(X_train.shape[1], 1)))
model.add(Dense(units=1))
# মডেল কম্পাইল এবং ট্রেনিং
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(X_train, y_train, epochs=50, batch_size=32)
# পূর্বাভাস করা
forecast = model.predict(X_test)
Prophet হল একটি ওপেন-সোর্স ফোরকাস্টিং টুল যা বিশেষত সিজনাল ডেটা এবং হলিডে প্রভাব বুঝতে সহায়তা করে। এটি ইররর ডেটা এবং অনিয়মিত ডেটা পরিচালনা করতে সক্ষম।
from fbprophet import Prophet
# Prophet ফরম্যাটে ডেটা প্রস্তুত করা
data = pd.DataFrame({'ds': data['date'], 'y': data['value']})
# মডেল তৈরি এবং ফিট করা
model = Prophet()
model.fit(data)
# ভবিষ্যতের জন্য পূর্বাভাস করা
future = model.make_future_dataframe(data, periods=10)
forecast = model.predict(future)
# পূর্বাভাস প্লট করা
model.plot(forecast)
plt.show()
XGBoost হল একটি শক্তিশালী গ্রেডিয়েন্ট বুস্টিং মডেল যা টাইম সিরিজ ফোরকাস্টিংয়ে ব্যবহৃত হতে পারে। XGBoost মূলত lag features তৈরি করে এবং টার্গেট মান পূর্বাভাস করার জন্য একটি সুপারভাইজড লার্নিং মডেল হিসেবে কাজ করে।
import xgboost as xgb
# ল্যাগ ফিচার তৈরি করা
X_train, y_train = create_lag_features(time_series_data)
# XGBoost মডেল ট্রেনিং
model = xgb.XGBRegressor(objective='reg:squarederror')
model.fit(X_train, y_train)
# পূর্বাভাস করা
forecast = model.predict(X_test)
ARIMAX হল ARIMA এর এক্সটেনশন যা এক্সোজেনাস ভেরিয়েবল (অর্থাৎ বাইরের ডেটা যেমন আবহাওয়া, ইভেন্ট, বা অন্যান্য অর্থনৈতিক তথ্য) অন্তর্ভুক্ত করতে পারে। এটি ডেটার বাইরের প্রভাবকে অন্তর্ভুক্ত করে আরও ভাল পূর্বাভাস দেয়।
from statsmodels.tsa.statespace.sarimax import SARIMAX
# এক্সোজেনাস ভেরিয়েবল
exog_variables = external_data # এক্সোজেনাস ডেটা
# ARIMAX মডেল তৈরি করা
model = SARIMAX(y_train, exog=exog_variables, order=(1,1,1), seasonal_order=(1,1,1,12))
model_fit = model.fit()
# পূর্বাভাস করা
forecast = model_fit.forecast(steps=10, exog=exog_test)
টাইম সিরিজ ফোরকাস্টিংয়ের জন্য বিভিন্ন উন্নত প্রযুক্তি রয়েছে যা ডেটার মধ্যে থাকা ট্রেন্ড, সিজনালিটি এবং শক/বিপর্যয় ভালোভাবে ধরতে সক্ষম। কিছু জনপ্রিয় এবং উন্নত প্রযুক্তি হল:
উপযুক্ত মডেল নির্বাচন করা ডেটার বৈশিষ্ট্যের উপর নির্ভর করে এবং একে অপ্টিমাইজ করতে বিভিন্ন কৌশল প্রয়োগ করা যায়।
Read more